package com.tmxk.api.days01_wmh.list;

import java.util.ArrayList;

/**
 * @Desscription动态数组集合
 * @Author:wmh
 * @CreateTime:2022-11-28  10:42
 * @Version: 1.0
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        //需求： 一堆数据   1 -9  你还  false  9.99  男。
        //数组定义：
        Object[] name = {1,-9,"你好",false,9.99,"男"};
        //数组下标越界
       // System.out.println(name[28]);
        //集合框架中  所有的集合包都是在java.util包下
        ArrayList arrayList = new ArrayList(20);//初始容量设置，可删除
        //ArrayList
        /**
         * 集合添加元素方法
         * 集合名.add(对象元素)
         * 集合名.add(下标位置，对象元素)：通过下标位置添加集合元素需注意：指定下标位置必须依次存在(集合下标位置不能大于集合元素大小);
         */
        //集合元素中的调用add方法时，自动扩容，自动扩容的原理是
        // (1)当前集合元素的大小加1。(2)当前元素大小为0时，就是自动开辟的101个空间进行数据存储。
        //（2）底层自动开辟10个容量大小的空间，默认开辟的10个容量小使用完毕后，会根据当前集合元素的大小自动扩容
           //（3）以此类推，自动扩容的容量大小使用完毕，会根据大小自动扩容为原来的1.5倍。
        arrayList.add(1);
        arrayList.add(1,-9);
        //下标抛出指定范围，抛异常。
       //arrayList.add(20,"你好" );
        arrayList.add("你好");
        arrayList.add("么西么西去");
        //获取集合元素对象方法，集合对象名.size()
        System.out.println("ArrayList集合元素大小的长度:" + arrayList.size());
        //获取集合元素对象方法，集合对象名.get(index)
        System.out.println("ArrayList集合元素第一个元素：" + arrayList.get(0));
        System.out.println("ArrayList集合元素第二个元素：" + arrayList.get(1));
        System.out.println("ArrayList集合元素第三个元素：" + arrayList.get(2));

        //E (集合元素 Element ）  T（数据类型  Type） K（键 key）  V（值，Value）
        //ArrayList集合框架默认的容量大小，  18个。
       // System.out.println(10);
       //需求1：判断当前元素是否存在
        boolean isFind = arrayList.contains("你好");
        String message = isFind == true ? "存在该集合元素" :"不存在该集合元素";
        System.out.println(message);
        //循环遍历一下ArrayList;使用for i 循环遍历。下标遍历
        System.out.println("集合元素遍历方式一:");
        for (int i = 0; i <arrayList.size() ; i++) {
            System.out.println(arrayList.get(i));
        }
        //需求2:删除当前集合元素中1这个数据 集合对象名.remove(下标);返回，元素对象类型  集合对象名.remove(obj));返回boolean类型。
        arrayList.remove(arrayList.get(2));//通过元素删除
        arrayList.remove(1);         //通过下标删除
        System.out.println("集合元素遍历方式二:  foreach");
        for (Object obj : arrayList) {
            System.out.println(obj);
        }
    }
}
